跳到主要内容

路由过渡动画

以下使用 Vue 3 + Vue Router 4,通过 RouterView 插槽为实际页面组件添加过渡。

<template>
<nav>
<RouterLink to="/">首页</RouterLink>
<RouterLink to="/detail">详情</RouterLink>
</nav>
<RouterView v-slot="{ Component }">
<Transition name="slide" mode="out-in">
<component :is="Component" />
</Transition>
</RouterView>
</template>

<style>
.slide-enter-active,
.slide-leave-active { transition: opacity 0.3s, transform 0.3s; }
.slide-enter-from { opacity: 0; transform: translateX(50%); }
.slide-leave-to { opacity: 0; transform: translateX(-50%); }
</style>
  • mode="out-in" 让旧页面先离开,新页面再进入。
  • 需要同一路由不同参数之间也触发过渡时,可给动态组件增加与参数对应的 key。
  • 反向滑动可使用另一个过渡 name,并交换进入、离开的 transform 方向。
  • Vue 2 的进入起点类名为 *-enter;Vue 3 改为 *-enter-from。样式可按类选择器书写,无需只使用标签名。

路由过渡示意

单元素与列表过渡见 内置组件。